#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_log.h"
#include "esp_err.h"
#include "sd_scanner.h"

static const char *TAG = "MAIN";

static void sd_scanner_task(void *pvParameters)
{
    ESP_LOGI(TAG, "=== ESP32-P4 SD卡扫描器 ===");

    esp_err_t ret = sd_scanner_init_and_scan();
    if (ret != ESP_OK) {
        ESP_LOGE(TAG, "初始化失败: %s", esp_err_to_name(ret));
        if (ret == ESP_ERR_NOT_FOUND) {
            ESP_LOGW(TAG, "未检测到SD卡，请插入SD卡");
        }
    } else {
        ESP_LOGI(TAG, "✅ SD卡扫描器初始化成功");

        if (sd_scanner_is_mounted()) {
            ESP_LOGI(TAG, "✅ SD卡已挂载");

            sd_folder_info_t folders[10];
            int count = sd_scanner_get_folder_info(folders, 10);

            if (count > 0) {
                ESP_LOGI(TAG, "📂 文件夹信息:");
                const char *types[] = {"其他", "图片", "视频", "音乐"};

                for (int i = 0; i < count; i++) {
                    int type_idx = (folders[i].type >= 0 && folders[i].type <= 3) ? folders[i].type : 0;
                    ESP_LOGI(TAG, "  📁 %s: %d 个文件 (%s)",
                            folders[i].name, folders[i].file_count, types[type_idx]);
                }
            } else {
                ESP_LOGI(TAG, "📂 无文件夹信息");
            }
        } else {
            ESP_LOGW(TAG, "⚠️ SD卡未挂载");
        }
    }

    ESP_LOGI(TAG, "扫描完成");

    // 删除任务
    vTaskDelete(NULL);
}

void app_main(void)
{
    ESP_LOGI(TAG, "ESP32-P4 SD卡扫描器启动");
    ESP_LOGI(TAG, "IDF版本: %s", esp_get_idf_version());

    xTaskCreate(sd_scanner_task, "sd_task", 8192, NULL, 5, NULL);

    ESP_LOGI(TAG, "任务创建完成");
}
